package tp.tecnicasdisenio.model.factory;

import tp.tecnicasdisenio.dao.impl.jdbc.AlumnoDao;
import tp.tecnicasdisenio.dao.impl.jdbc.GrupoDao;
import tp.tecnicasdisenio.dao.impl.jdbc.MateriaDao;
import tp.tecnicasdisenio.model.ReglaInterface;
import tp.tecnicasdisenio.model.accion.AccionAltaGrupo;
import tp.tecnicasdisenio.model.parser.ParserAdjuntoAltaGrupo;
import tp.tecnicasdisenio.model.parser.ParserTituloAltaGrupo;
import tp.tecnicasdisenio.model.regla.ReglaAltaGrupo;
import tp.tecnicasdisenio.model.validador.ValidadorAltaGrupo;

public class ReglaAltaGrupoFactory implements ReglaFactoryInterface {

	public static ReglaAltaGrupoFactory instance;
	
	private ReglaAltaGrupoFactory(){
	}
	
	public static synchronized ReglaAltaGrupoFactory getInstance(){
		if(instance == null){
			instance= new ReglaAltaGrupoFactory();
		}
		return instance;
	}

	@Override
	public ReglaInterface crear() {		
		ValidadorAltaGrupo validadorAltaGrupo= new ValidadorAltaGrupo();
		validadorAltaGrupo.setAlumnoDao(AlumnoDao.getInstance());
		validadorAltaGrupo.setGrupoDao(GrupoDao.getInstance());
		validadorAltaGrupo.setMateriaDao(MateriaDao.getInstance());
		validadorAltaGrupo.setParserAdjuntoAltaGrupo(new ParserAdjuntoAltaGrupo());
		
		AccionAltaGrupo accionAltaGrupo= new AccionAltaGrupo();
		accionAltaGrupo.setGrupoDao(GrupoDao.getInstance());
		accionAltaGrupo.setAlumnoDao(AlumnoDao.getInstance());
		accionAltaGrupo.setMateriaDao(MateriaDao.getInstance());
		accionAltaGrupo.setParserAdjuntoAltaGrupo(new ParserAdjuntoAltaGrupo());
		accionAltaGrupo.setValidadorAltaGrupo(validadorAltaGrupo);
		
		ReglaAltaGrupo reglaAltaMateria= new ReglaAltaGrupo();
		reglaAltaMateria.setParserTitulo(new ParserTituloAltaGrupo());
		reglaAltaMateria.nuevaAccion(accionAltaGrupo);
		
		return reglaAltaMateria;
	}


}
